import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'

// https://vitejs.dev/config/
export default defineConfig(({mode})=>{
  const env = loadEnv(mode, process.cwd());
  const proxy = {}
  //接口代理
  const VITE_PROXY_API_HOST = env.VITE_PROXY_API_HOST;
  if (VITE_PROXY_API_HOST) proxy['/proxy_api'] = {
    target: VITE_PROXY_API_HOST, // 目标服务器地址
    headers: {}, //固定头信息
    changeOrigin: true, // 是否改变请求源（解决跨域）
    secure: false, // 如果是https，可以跳过证书验证
    rewrite: (path) => path.replace(/^\/proxy_api/, ''), // 路径重写（可选）
    configure: (proxy, options) => {
      // 修改请求头
      proxy.on('proxyReq', (proxyReq) => {
      })
      // 修改响应头
      proxy.on('proxyRes', (proxyRes) => {
        proxyRes.headers['Proxy-From-Host'] = VITE_PROXY_API_HOST //添加响应头，表示代理后转移的地址，便于调试
      })
    }
  };
  return {
    base: './',
    server: {
      host: '0.0.0.0',
      port: 9400, // 指定端口号
      strictPort: true, // 如果端口被占用则直接退出，而不是尝试下一个可用端口
      proxy
    },
    plugins: [
      vue(),
      vueDevTools(),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    build: {
      assetsDir: 'static',
      rollupOptions: {
        output: {
          entryFileNames: 'static/[name].js',
          chunkFileNames: 'static/[name].js',
          assetFileNames: 'static/[name].[ext]',
          manualChunks(id, info){
            return 'chunks';
          },
        }
      }
    },
  }
})
